package main

import "fmt"

// a). 继续扩展程序，定义类型 Triangle，让它实现 AreaInterface 接口。通过计算一个特定三角形的面积来进行测试（三角形面积=0.5 * (底 * 高)）
// b). 定义一个新接口 PeriInterface，它有一个 Perimeter 方法。让 Square 实现这个接口，并通过一个 Square 示例来测试它。

type AreaInterface interface {
	Area() float64
}

type Triangle struct {
	width, height float64
}

func (t *Triangle) Area() float64 {
	return t.width * t.height * 0.5
}

type PeriInterface interface {
	Perimeter() float64
}

type Square struct {
	x, y float64
}

func (s *Square) Perimeter() float64 {
	return 2 * (s.x + s.y)
}

func (s *Square) Area() float64 {
	return s.x * s.y
}

func main() {
	var areas []AreaInterface
	squ := &Square{3.0, 7.0}
	tri := new(Triangle)
	tri.width = 10.0
	tri.height = 8.0
	areas = []AreaInterface{squ, tri}
	for _, a := range areas {
		fmt.Println("struct a: ", a, " area: ", a.Area())
	}
	fmt.Println("square(", squ, "): ", squ.Perimeter())
}
